package com.esunny.online.service.impl;

import com.esunny.online.dao.ResourceDao;
import com.esunny.online.domain.dto.ResourceQuery;
import com.esunny.online.service.ResourceService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author ：李先生
 * @date ：Created in 2020/7/18 8:42
 * @description： resourceService的实现类
 * @modified By：
 * @version: $
 */
@Service
public class ResourceServiceImpl implements ResourceService {

    @Resource
    private ResourceDao resourceDao;

    /**
     * 上传文件功能
     *
     * @param resource 数据
     * @return 主键
     */
    @Override
    public int upload(com.esunny.online.domain.entity.Resource resource) {
        if (resource == null) {
            throw new IllegalArgumentException("参数不能为空");
        } else {
            return resourceDao.insertResource(resource);
        }
    }

    /**
     * 根据Id查找resource
     *
     * @param id resourceId
     * @return Resource对象
     */
    @Override
    public com.esunny.online.domain.entity.Resource queryById(int id) {

        return resourceDao.selectById(id);
    }

    /**
     * 分页查询
     *
     * @param resourceQuery 数据
     * @return 资源列表+资源总数
     */
    @Override
    public Map<String, Object> queryByLimit( ResourceQuery resourceQuery) {


        int cur = resourceQuery.getCurrentPage();
        int limit = resourceQuery.getPageSize();
        int offset = (cur - 1) * limit;

        List<com.esunny.online.domain.entity.Resource> resourceList = resourceDao.selectResource(offset, limit);

        Map<String, Object> res = new HashMap<>();
        res.put("resourceList", resourceList);

        return res;
    }

    /**
     * 查询数据总数
     *
     * @return 数据总数
     */
    @Override
    public int queryCount() {

        return resourceDao.selectCount();
    }

    /**
     * 删除功能
     *
     * @param map 数据
     * @return 受影响行数
     */
    @Override
    public int delete(Map<String, Object> map) {

        Integer id = (Integer) map.get("id");

        return resourceDao.delResource(id);
    }


}
